home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / fromspacelove.swf / scripts / frame_5 / PlaceObject2_387_4 / CLIPACTIONRECORD onClipEvent(load).as < prev   
Encoding:
Text File  |  2006-06-13  |  24.9 KB  |  859 lines

  1. onClipEvent(load){
  2.    function CreateSoldier(xx, zz, Type, Army)
  3.    {
  4.       Xpos = xx * FW - zz * FA;
  5.       Zpos = zz * FD;
  6.       TotSold++;
  7.       Shadows.ShadowSample.duplicateMovieClip("SoldShad" + TotSold,TotSold);
  8.       eval("Shadows.SoldShad" + TotSold)._x = Xpos;
  9.       eval("Shadows.SoldShad" + TotSold)._y = Zpos;
  10.       eval("Shadows.SoldShad" + TotSold).gotoAndStop(1);
  11.       SoldSample.duplicateMovieClip("S" + TotSold,xx + MapW * zz * 4);
  12.       eval("S" + TotSold).Type = Type;
  13.       eval("S" + TotSold).Army = Army;
  14.       eval("S" + TotSold)._x = Xpos;
  15.       eval("S" + TotSold)._y = Zpos;
  16.       eval("S" + TotSold).OldPT = 0;
  17.       eval("S" + TotSold).OldX = eval("S" + TotSold).x = xx;
  18.       eval("S" + TotSold).OldZ = eval("S" + TotSold).z = zz;
  19.       eval("S" + TotSold).Shoot1 = new Sound(eval("S" + TotSold));
  20.       eval("S" + TotSold).Shoot2 = new Sound(eval("S" + TotSold));
  21.       eval("S" + TotSold).Die1 = new Sound(eval("S" + TotSold));
  22.       eval("S" + TotSold).Die2 = new Sound(eval("S" + TotSold));
  23.       eval("S" + TotSold).Shoot1.attachSound("Shoot1");
  24.       eval("S" + TotSold).Shoot2.attachSound("Shoot2");
  25.       eval("S" + TotSold).Die1.attachSound("Die1");
  26.       eval("S" + TotSold).Die2.attachSound("Die2");
  27.       if(eval("S" + TotSold).Type == 1)
  28.       {
  29.          eval("S" + TotSold).WalkSpeed = 7;
  30.       }
  31.       eval("S" + TotSold).XDM = new Array(eval("S" + TotSold).WalkSpeed * 0.2,eval("S" + TotSold).WalkSpeed,- eval("S" + TotSold).WalkSpeed * 0.2,- eval("S" + TotSold).WalkSpeed,0);
  32.       eval("S" + TotSold).ZDM = new Array(- eval("S" + TotSold).WalkSpeed * 0.4,0,eval("S" + TotSold).WalkSpeed * 0.4,0,0);
  33.       Map[zz][xx] = TotSold;
  34.       eval("S" + TotSold).ind = TotSold;
  35.       eval("S" + TotSold).Go = true;
  36.       eval("S" + TotSold).Dead = false;
  37.       eval("S" + TotSold).Dark = false;
  38.       eval("S" + TotSold).Follow = false;
  39.       eval("S" + TotSold).PrevLocX = new Array();
  40.       eval("S" + TotSold).PrevLocZ = new Array();
  41.       eval("S" + TotSold).dir = random(4);
  42.       eval("S" + TotSold).Col = new Color(eval("S" + TotSold));
  43.       eval("S" + TotSold).CurPos = eval("S" + TotSold).DesPos = random(16) + 1;
  44.       eval("S" + TotSold).DirPos = new Array(2,5,10,13);
  45.       eval("S" + TotSold).Pacified = false;
  46.       eval("S" + TotSold).InAbduction = false;
  47.    }
  48.    function CalculateBox(X, Z, XCalc, ZCalc)
  49.    {
  50.       var _loc1_ = {x:0,z:0};
  51.       if(ZCalc == 1)
  52.       {
  53.          _loc1_.z = Math.floor(Z / FD);
  54.       }
  55.       if(ZCalc == 2)
  56.       {
  57.          _loc1_.z = Math.round(Z / FD);
  58.       }
  59.       if(ZCalc == 3)
  60.       {
  61.          _loc1_.z = Math.ceil(Z / FD);
  62.       }
  63.       if(XCalc == 1)
  64.       {
  65.          _loc1_.x = Math.floor((X + _loc1_.z * FA) / FW);
  66.       }
  67.       if(XCalc == 2)
  68.       {
  69.          _loc1_.x = Math.round((X + _loc1_.z * FA) / FW);
  70.       }
  71.       if(XCalc == 3)
  72.       {
  73.          _loc1_.x = Math.ceil((X + _loc1_.z * FA) / FW);
  74.       }
  75.       return _loc1_;
  76.    }
  77.    function Move(MC)
  78.    {
  79.       if(MC.xGo > 0)
  80.       {
  81.          xCalc = 3;
  82.       }
  83.       else
  84.       {
  85.          xCalc = 1;
  86.       }
  87.       if(MC.zGo > 0)
  88.       {
  89.          zCalc = 3;
  90.       }
  91.       else
  92.       {
  93.          zCalc = 1;
  94.       }
  95.       Box = CalculateBox(MC._x + MC.xGo,MC._y + MC.zGo,1,2);
  96.       if((Map[Box.z][Box.x] == 0 or Map[Box.z][Box.x] > 600 or Map[Box.z][Box.x] == MC.ind) and Box.x >= 0 and Box.x < MapW and Boox.z >= 0 and Box.z < MapD)
  97.       {
  98.          MC._x += MC.xGo;
  99.          MC._y += MC.zGo;
  100.          eval("Shadows.SoldShad" + MC.ind)._x = MC._x;
  101.          eval("Shadows.SoldShad" + MC.ind)._y = MC._y;
  102.          MC.Blocked = false;
  103.       }
  104.       else
  105.       {
  106.          MC.Blocked = true;
  107.       }
  108.       Box = CalculateBox(MC._x,MC._y,1,2);
  109.       MC.x = Box.x;
  110.       MC.z = Box.z;
  111.       if(MC.OldPT >= 0)
  112.       {
  113.          Map[MC.OldZ][MC.OldX] = MC.OldPT;
  114.       }
  115.       if(Map[MC.z][MC.x] > 300)
  116.       {
  117.          MC.OldPT = Map[MC.z][MC.x];
  118.       }
  119.       else
  120.       {
  121.          MC.OldPT = 0;
  122.       }
  123.       Map[MC.z][MC.x] = MC.ind;
  124.       MC.OldX = MC.x;
  125.       MC.OldZ = MC.z;
  126.       if(MC._y <= MC.z * FD - 5)
  127.       {
  128.          Dpt = MC.x + MapW * MC.z * 4;
  129.       }
  130.       else
  131.       {
  132.          Dpt = MC.x + MapW * (MC.z * 4 + 2);
  133.       }
  134.       MC.swapDepths(Dpt);
  135.       MC.xGo = MC.zGo = 0;
  136.    }
  137.    function CheckShadow(MC)
  138.    {
  139.       var _loc2_ = {x:0,y:0};
  140.       _loc2_.x = MC._x + 17.5;
  141.       _loc2_.y = MC._y - 7;
  142.       localToGlobal(_loc2_);
  143.       if(Shadows.High.hitTest(_loc2_.x,_loc2_.y,true))
  144.       {
  145.          if(!MC.Dark)
  146.          {
  147.             MC.Col.setTransform(DarkColor);
  148.             MC.Dark = true;
  149.          }
  150.       }
  151.       else if(MC.Dark)
  152.       {
  153.          MC.Col.setTransform(NormalColor);
  154.          MC.Dark = false;
  155.       }
  156.    }
  157.    function FindDirection(MC, XTar, ZTar)
  158.    {
  159.       XDis = XTar - MC.x;
  160.       ZDis = ZTar - MC.z;
  161.       if(Math.abs(XDis) > 2 or Math.abs(ZDis) > 2)
  162.       {
  163.          MC.Go = true;
  164.          PrefDir = new Array();
  165.          if(Math.abs(XDis) - Math.abs(ZDis) > 0)
  166.          {
  167.             if(XDis > 0)
  168.             {
  169.                PrefDir[0] = 1;
  170.             }
  171.             else
  172.             {
  173.                PrefDir[0] = 3;
  174.             }
  175.             if(ZDis > 0)
  176.             {
  177.                PrefDir[1] = 2;
  178.             }
  179.             else
  180.             {
  181.                PrefDir[1] = 0;
  182.             }
  183.          }
  184.          else
  185.          {
  186.             if(ZDis > 0)
  187.             {
  188.                PrefDir[0] = 2;
  189.             }
  190.             else
  191.             {
  192.                PrefDir[0] = 0;
  193.             }
  194.             if(XDis > 0)
  195.             {
  196.                PrefDir[1] = 1;
  197.             }
  198.             else
  199.             {
  200.                PrefDir[1] = 3;
  201.             }
  202.          }
  203.          PrefDir[2] = PrefDir[1] - 2;
  204.          PrefDir[3] = PrefDir[0] - 2;
  205.          if(PrefDir[2] < 0)
  206.          {
  207.             PrefDir[2] += 4;
  208.          }
  209.          if(PrefDir[3] < 0)
  210.          {
  211.             PrefDir[3] += 4;
  212.          }
  213.          FinalDir = 4;
  214.          CycDir = 4;
  215.          dd = 0;
  216.          while(dd <= 3)
  217.          {
  218.             Cycling = false;
  219.             dr = PrefDir[dd];
  220.             NextX = MC._x + MC.XDM[dr];
  221.             NextZ = MC._y + MC.ZDM[dr];
  222.             Pt = PointOnMap(NextX,NextZ);
  223.             if((Pt == 0 or Pt == MC.ind) and dr != MC.BackDir)
  224.             {
  225.                j = 0;
  226.                while(j < MC.PrevLocX.length)
  227.                {
  228.                   if(Math.abs(NextX - MC.PrevLocX[j]) < 2 and Math.abs(NextZ - MC.PrevLocZ[j]) < 2)
  229.                   {
  230.                      CycDir = dr;
  231.                      Cycling = true;
  232.                      break;
  233.                   }
  234.                   j++;
  235.                }
  236.                if(!Cycling)
  237.                {
  238.                   FinalDir = dr;
  239.                   break;
  240.                }
  241.             }
  242.             dd++;
  243.          }
  244.          if(FinalDir == 4)
  245.          {
  246.             FinalDir = CycDir;
  247.          }
  248.          if(FinalDir == 4)
  249.          {
  250.             FinalDir = Mc.BackDir;
  251.          }
  252.          MC.BackDir = FinalDir + 2;
  253.          if(MC.BackDir > 3)
  254.          {
  255.             MC.BackDir -= 4;
  256.          }
  257.          MC.PrevLocX.push(Math.round(MC._x));
  258.          MC.PrevLocZ.push(Math.round(MC._y));
  259.          if(MC.PrevLocX.length > 18)
  260.          {
  261.             MC.PrevLocX.shift();
  262.             MC.PrevLocZ.shift();
  263.          }
  264.          MC.dir = FinalDir;
  265.          MC.xGo = MC.XDM[FinalDir];
  266.          MC.zGo = MC.ZDM[FinalDir];
  267.       }
  268.       else
  269.       {
  270.          MC.Go = false;
  271.       }
  272.    }
  273.    function PointOnMap(Xc, Zc)
  274.    {
  275.       Bx = CalculateBox(Xc,Zc,1,2);
  276.       return Map[Bx.z][Bx.x];
  277.    }
  278.    function Shoot(MC, Target)
  279.    {
  280.       FreeBull = 0;
  281.       Xfrom = MC._x + 17.5;
  282.       Zfrom = MC._y - 7;
  283.       Xto = Target._x + 17.5;
  284.       Zto = Target._y - 7;
  285.       XDis = Math.abs(Xto - Xfrom);
  286.       ZDis = Math.abs(Zto - Zfrom) * 1.67;
  287.       Angle = Math.atan(ZDis / XDis);
  288.       if(Xto > Xfrom)
  289.       {
  290.          Xco = 1;
  291.       }
  292.       else
  293.       {
  294.          Xco = -1;
  295.       }
  296.       if(Zto > Zfrom)
  297.       {
  298.          Zco = 1;
  299.       }
  300.       else
  301.       {
  302.          Zco = -1;
  303.       }
  304.       Angle += Math.random() * 0.1 - 0.05;
  305.       XM = Math.cos(Angle) * 20 * Xco;
  306.       ZM = Math.sin(Angle) * 12 * Zco;
  307.       jj = 1;
  308.       while(jj <= TotBull)
  309.       {
  310.          if(!eval("B" + jj)._visible)
  311.          {
  312.             FreeBull = jj;
  313.          }
  314.          jj++;
  315.       }
  316.       if(FreeBull == 0)
  317.       {
  318.          TotBull++;
  319.          BulletSample.duplicateMovieClip("B" + TotBull,MC.x + MapW * (MC.z * 4 + 3));
  320.          FreeBull = TotBull;
  321.       }
  322.       MC.Phase.Body.Fire1.play();
  323.       MC.Phase.Body.Fire2.play();
  324.       Volume = 100 - Math.abs(UFO.Boxx - MC.x) - Math.abs(UFO.Boxz - MC.z);
  325.       Pan = (MC.x - UFO.Boxx) * 3;
  326.       if(Pan > 100)
  327.       {
  328.          Pan = 100;
  329.       }
  330.       if(Pan < -100)
  331.       {
  332.          Pan = -100;
  333.       }
  334.       if(Volume < 0)
  335.       {
  336.          Volume = 0;
  337.       }
  338.       if(random(2) == 0)
  339.       {
  340.          MC.Shoot1.setVolume(Volume);
  341.          MC.Shoot1.setPan(Pan);
  342.          MC.Shoot1.start();
  343.       }
  344.       else
  345.       {
  346.          MC.Shoot2.setVolume(Volume);
  347.          MC.Shoot2.setPan(Pan);
  348.          MC.Shoot2.start();
  349.       }
  350.       eval("B" + FreeBull).active = true;
  351.       eval("B" + FreeBull)._x = Xfrom + XM * 4;
  352.       eval("B" + FreeBull)._y = Zfrom + ZM * 4;
  353.       eval("B" + FreeBull).xMove = XM;
  354.       eval("B" + FreeBull).zMove = ZM;
  355.    }
  356.    function MoveBullets()
  357.    {
  358.       ii = 1;
  359.       while(ii <= TotBull)
  360.       {
  361.          if(eval("B" + ii).active)
  362.          {
  363.             if(Math.abs(eval("B" + ii)._x - S299._x) > 780 or Math.abs(eval("B" + ii)._y - S299._y) > 610)
  364.             {
  365.                eval("B" + ii)._visible = false;
  366.             }
  367.             else
  368.             {
  369.                eval("B" + ii)._visible = true;
  370.             }
  371.             eval("B" + ii)._x += eval("B" + ii).xMove;
  372.             eval("B" + ii)._y += eval("B" + ii).zMove;
  373.             Box = CalculateBox(eval("B" + ii)._x,eval("B" + ii)._y,1,1);
  374.             if(Box.x >= MapW or Box.x < 0 or Box.z >= MapD or Box.z < 0)
  375.             {
  376.                eval("B" + ii).active = false;
  377.             }
  378.             else if(Map[Box.z][Box.x] >= 300 and Map[Box.z][Box.x] < 400)
  379.             {
  380.                eval("B" + ii).active = false;
  381.             }
  382.             xx = Box.x - 1;
  383.             while(xx <= Box.x + 1)
  384.             {
  385.                zz = Box.z - 1;
  386.                while(zz <= Box.z + 1)
  387.                {
  388.                   if(Map[zz][xx] > 0 and Map[zz][xx] < 300)
  389.                   {
  390.                      if(eval("B" + ii)._x > eval("S" + Map[zz][xx])._x and eval("B" + ii)._x < eval("S" + Map[zz][xx])._x + FW and eval("B" + ii)._y < eval("S" + Map[zz][xx])._y and eval("B" + ii)._y > eval("S" + Map[zz][xx])._y - 20 and !eval("S" + Map[zz][xx]).InAbduction)
  391.                      {
  392.                         eval("B" + ii).active = false;
  393.                         eval("S" + Map[zz][xx]).Dead = true;
  394.                         if(!eval("S" + Map[zz][xx]).Pacified)
  395.                         {
  396.                            FindPhase(eval("S" + Map[zz][xx]));
  397.                         }
  398.                         if(Math.abs(eval("B" + ii).xMove) > Math.abs(eval("B" + ii).zMove * 2.5))
  399.                         {
  400.                            Horizontal = true;
  401.                         }
  402.                         else
  403.                         {
  404.                            Horizontal = false;
  405.                         }
  406.                         if(Horizontal)
  407.                         {
  408.                            if(eval("B" + ii).xMove > 0)
  409.                            {
  410.                               eval("S" + Map[zz][xx]).Phase.Body.gotoAndPlay(25);
  411.                               eval("Shadows.SoldShad" + Map[zz][xx]).Body.gotoAndPlay(9);
  412.                            }
  413.                            else
  414.                            {
  415.                               eval("S" + Map[zz][xx]).Phase.Body.gotoAndPlay(39);
  416.                               eval("Shadows.SoldShad" + Map[zz][xx]).Body.gotoAndPlay(23);
  417.                            }
  418.                         }
  419.                         else if(eval("B" + ii).zMove > 0)
  420.                         {
  421.                            eval("S" + Map[zz][xx]).Phase.Body.gotoAndPlay(32);
  422.                            eval("Shadows.SoldShad" + Map[zz][xx]).Body.gotoAndPlay(16);
  423.                         }
  424.                         else
  425.                         {
  426.                            eval("S" + Map[zz][xx]).Phase.Body.gotoAndPlay(18);
  427.                            eval("Shadows.SoldShad" + Map[zz][xx]).Body.gotoAndPlay(2);
  428.                         }
  429.                         eval("S" + Map[zz][xx]).swapDepth(eval("S" + Map[zz][xx]).x + MapW * eval("S" + Map[zz][xx]).z * 4 + MapW);
  430.                         if(!eval("S" + Map[zz][xx]).Pacified and TotSold < MaxSold)
  431.                         {
  432.                            LocateNewSoldier(eval("S" + Map[zz][xx]).Type,eval("S" + Map[zz][xx]).Army);
  433.                         }
  434.                         DVolume = 100 - Math.abs(UFO.Boxx - eval("S" + Map[zz][xx]).x) - Math.abs(UFO.Boxz - eval("S" + Map[zz][xx]).z);
  435.                         DPan = (eval("S" + Map[zz][xx]).x - UFO.Boxx) * 3;
  436.                         if(DVolume < 0)
  437.                         {
  438.                            DVolume = 0;
  439.                         }
  440.                         if(DPan > 100)
  441.                         {
  442.                            DPan = 100;
  443.                         }
  444.                         if(DPan < -100)
  445.                         {
  446.                            DPan = -100;
  447.                         }
  448.                         if(random(2) == 0)
  449.                         {
  450.                            eval("S" + Map[zz][xx]).Die1.setVolume(DVolume);
  451.                            eval("S" + Map[zz][xx]).Die1.setPan(DPan);
  452.                            eval("S" + Map[zz][xx]).Die1.start();
  453.                         }
  454.                         else
  455.                         {
  456.                            eval("S" + Map[zz][xx]).Die2.setVolume(DVolume);
  457.                            eval("S" + Map[zz][xx]).Die2.setPan(DPan);
  458.                            eval("S" + Map[zz][xx]).Die2.start();
  459.                         }
  460.                         _parent.Panel.Dead = _parent.Panel.Dead + 1;
  461.                         if(eval("S" + Map[zz][xx]).Pacified)
  462.                         {
  463.                            _parent.Panel.Pacified--;
  464.                         }
  465.                         ReduceAlive();
  466.                         Map[zz][xx] = 666;
  467.                      }
  468.                   }
  469.                   zz++;
  470.                }
  471.                xx++;
  472.             }
  473.             eval("B" + ii).swapDepths(Box.x + MapW * (Box.z * 4 + 3));
  474.          }
  475.          else
  476.          {
  477.             eval("B" + ii)._visible = false;
  478.          }
  479.          ii++;
  480.       }
  481.    }
  482.    function Spin(MC)
  483.    {
  484.       if(MC.CurPos == MC.DesPos)
  485.       {
  486.          return true;
  487.       }
  488.       MC.Phase.gotoAndStop(5);
  489.       SpinAmpl = MC.DesPos - MC.CurPos;
  490.       SpinDir = SpinAmpl / Math.abs(SpinAmpl);
  491.       if(Math.abs(SpinAmpl) > 8)
  492.       {
  493.          SpinDir = - SpinDir;
  494.       }
  495.       MC.CurPos += SpinDir;
  496.       if(MC.CurPos > 16)
  497.       {
  498.          MC.CurPos -= 16;
  499.       }
  500.       if(MC.CurPos < 1)
  501.       {
  502.          MC.CurPos += 16;
  503.       }
  504.       MC.Phase.Body.gotoAndStop(MC.CurPos);
  505.       return false;
  506.    }
  507.    function CalcDir(From, To)
  508.    {
  509.       XDis = Math.abs(To._x - From._x);
  510.       ZDis = Math.abs(To._y - From._y) / 0.4;
  511.       Angle = Math.atan(ZDis / XDis);
  512.       if(To._x >= From._x and To._y < From._y)
  513.       {
  514.          Angle = HalfPI - Angle;
  515.       }
  516.       if(To._x >= From._x and To._y >= From._y)
  517.       {
  518.          Angle = HalfPI + Angle;
  519.       }
  520.       if(To._x < From._x and To._y >= From._y)
  521.       {
  522.          Angle = 3.141592653589793 + HalfPI - Angle;
  523.       }
  524.       if(To._x < From._x and To._y < From._y)
  525.       {
  526.          Angle = 3.141592653589793 + HalfPI + Angle;
  527.       }
  528.       Phase = Math.round(Angle * 8 / 3.141592653589793) + 1;
  529.       if(Phase > 16)
  530.       {
  531.          Phase -= 16;
  532.       }
  533.       return Phase;
  534.    }
  535.    function FindPhase(MC)
  536.    {
  537.       if(MC.CurPos == 16 or MC.CurPos <= 3)
  538.       {
  539.          MC.Phase.gotoAndStop(1);
  540.       }
  541.       if(MC.CurPos >= 4 and MC.CurPos <= 7)
  542.       {
  543.          MC.Phase.gotoAndStop(2);
  544.       }
  545.       if(MC.CurPos >= 8 and MC.CurPos <= 11)
  546.       {
  547.          MC.Phase.gotoAndStop(3);
  548.       }
  549.       if(MC.CurPos >= 12 and MC.CurPos <= 15)
  550.       {
  551.          MC.Phase.gotoAndStop(4);
  552.       }
  553.    }
  554.    function AbductSold(MC)
  555.    {
  556.       ActivateColumn(false);
  557.       eval("Shadows.SoldShad" + MC.ind)._visible = false;
  558.       _parent.Panel.Pacified = _parent.Panel.Pacified + 1;
  559.       if(TotSold < MaxSold)
  560.       {
  561.          LocateNewSoldier(MC.Type,MC.Army);
  562.       }
  563.       _parent.Score += _parent.level * 10;
  564.       ReduceAlive();
  565.    }
  566.    function ReduceAlive()
  567.    {
  568.       if(_parent.Panel.Pacified + _parent.Panel.Dead == MaxSold)
  569.       {
  570.          _parent.Pacified = _parent.Panel.Pacified;
  571.          _parent.Dead = _parent.Panel.Dead;
  572.          _quality = "HIGH";
  573.          _parent.InProcess = false;
  574.          if(_parent.Pacified >= _parent.LevelLimit[_parent.level - 1])
  575.          {
  576.             _parent.Bonus = _parent.level * (_parent.LevelLimit[_parent.level - 1] * 25 + (_parent.Pacified - _parent.LevelLimit[_parent.level - 1]) * 50);
  577.             if(_parent.level == _parent.LastLevel)
  578.             {
  579.                _parent.Bonus += _parent.Lives * 2500;
  580.             }
  581.             else
  582.             {
  583.                _parent.Lives = _parent.Lives + 1;
  584.             }
  585.             _parent.Score += _parent.Bonus;
  586.             if(_parent.level < _parent.LastLevel)
  587.             {
  588.                _parent.gotoAndStop(6);
  589.             }
  590.             else
  591.             {
  592.                _parent.Passed = true;
  593.                _parent.gotoAndStop(8);
  594.             }
  595.          }
  596.          else
  597.          {
  598.             _parent.Lives = _parent.Lives - 1;
  599.             _parent.gotoAndStop(7);
  600.          }
  601.       }
  602.    }
  603.    function ActivateColumn(Switch)
  604.    {
  605.       if(Switch)
  606.       {
  607.          UFO.snd.start();
  608.          Column._visible = true;
  609.          Column._x = UFO.x;
  610.          Column._y = UFO.z;
  611.          Column.swapDepths(UFO.Boxx + MapW * ((UFO.Boxz + 2) * 4 + 3));
  612.          Shadows.High.UFOShadow.gotoAndPlay(2);
  613.          UFO.Active = false;
  614.       }
  615.       else
  616.       {
  617.          UFO.Active = true;
  618.          Column._visible = false;
  619.          Shadows.High.UFOShadow.gotoAndStop(1);
  620.       }
  621.    }
  622.    function UpdateSlots()
  623.    {
  624.       UFO.FreeSlots = 0;
  625.       i = 1;
  626.       while(i <= 3)
  627.       {
  628.          if(UFO.AbdSold[i - 1] > 0)
  629.          {
  630.             eval("_parent.Panel.Light" + i).gotoAndStop(2);
  631.          }
  632.          else
  633.          {
  634.             eval("_parent.Panel.Light" + i).gotoAndStop(1);
  635.             UFO.FreeSlots = UFO.FreeSlots + 1;
  636.          }
  637.          i++;
  638.       }
  639.       if(UFO.FreeSlots == 0)
  640.       {
  641.          _parent.Panel.Light5.gotoAndStop(3);
  642.       }
  643.       else
  644.       {
  645.          _parent.Panel.Light5.gotoAndStop(1);
  646.       }
  647.    }
  648.    function LocateSoldierVertically(Type, Army)
  649.    {
  650.       var _loc1_ = {x:0,y:0};
  651.       Found = false;
  652.       if(Army == 1)
  653.       {
  654.          Xloc = 0;
  655.       }
  656.       else
  657.       {
  658.          Xloc = MapW - 1;
  659.       }
  660.       InitZloc = random(MapD);
  661.       offset = 0;
  662.       while(offset < MapD)
  663.       {
  664.          Sign = -1;
  665.          while(Sign <= 1)
  666.          {
  667.             Zloc = InitZloc + offset * Sign;
  668.             if(Map[Zloc][Xloc] == 0 and Zloc < MapD and Zloc >= 0)
  669.             {
  670.                _loc1_.x = Xloc * FW - Zloc * FA;
  671.                _loc1_.y = Zloc * FD;
  672.                localToGlobal(_loc1_);
  673.                if(_loc1_.x < 0 or _loc1_.x > 585 or _loc1_.y < 0 or _loc1_.y > 420)
  674.                {
  675.                   CreateSoldier(Xloc,Zloc,Type,Army);
  676.                   Found = true;
  677.                }
  678.             }
  679.             if(Found)
  680.             {
  681.                break;
  682.             }
  683.             Sign += 2;
  684.          }
  685.          if(Found)
  686.          {
  687.             break;
  688.          }
  689.          offset++;
  690.       }
  691.       return Found;
  692.    }
  693.    function LocateSoldierHorizontally(Type, Army)
  694.    {
  695.       var _loc1_ = {x:0,y:0};
  696.       Found = false;
  697.       if(Army == 1)
  698.       {
  699.          Zloc = 0;
  700.       }
  701.       else
  702.       {
  703.          Zloc = MapD - 1;
  704.       }
  705.       InitXloc = random(MapW);
  706.       offset = 0;
  707.       while(offset < MapW)
  708.       {
  709.          Sign = -1;
  710.          while(Sign <= 1)
  711.          {
  712.             Xloc = InitXloc + offset * Sign;
  713.             if(Map[Zloc][Xloc] == 0 and Xloc < MapW and Xloc >= 0)
  714.             {
  715.                _loc1_.x = Xloc * FW - Zloc * FA;
  716.                _loc1_.y = Zloc * FD;
  717.                localToGlobal(_loc1_);
  718.                if(_loc1_.x < 0 or _loc1_.x > 585 or _loc1_.y < 0 or _loc1_.y > 420)
  719.                {
  720.                   CreateSoldier(Xloc,Zloc,Type,Army);
  721.                   Found = true;
  722.                }
  723.             }
  724.             if(Found)
  725.             {
  726.                break;
  727.             }
  728.             Sign += 2;
  729.          }
  730.          if(Found)
  731.          {
  732.             break;
  733.          }
  734.          offset++;
  735.       }
  736.       return Found;
  737.    }
  738.    function LocateNewSoldier(Type, Army)
  739.    {
  740.       if(random(2) == 0)
  741.       {
  742.          Found = LocateSoldierVertically(Type,Army);
  743.          if(!Found)
  744.          {
  745.             Found = LocateSoldierHorizontally(Type,Army);
  746.          }
  747.       }
  748.       else
  749.       {
  750.          Found = LocateSoldierHorizontally(Type,Army);
  751.          if(!Found)
  752.          {
  753.             Found = LocateSoldierVertically(Type,Army);
  754.          }
  755.       }
  756.       if(!Found)
  757.       {
  758.          CreateSoldier(random(MapW),random(MapD),Type,Army);
  759.       }
  760.    }
  761.    _parent.InProcess = true;
  762.    STC = FramesSummary = 0;
  763.    SpeedTest = true;
  764.    _quality = "HIGH";
  765.    Paused = false;
  766.    _parent.Bonus = 0;
  767.    Map = eval("_parent.level" + _parent.level);
  768.    Rad2Deg = 57.29577951308232;
  769.    HalfPI = 1.5707963267948966;
  770.    MapD = Map.length;
  771.    MapW = Map[0].length;
  772.    FW = 35;
  773.    FD = 14;
  774.    FA = 7;
  775.    MaxSold = _parent.LevelMax[_parent.level - 1];
  776.    TotSold = 0;
  777.    TotBull = 0;
  778.    UFO = new Object();
  779.    UFO.XSpeed = 0;
  780.    UFO.ZSpeed = 0;
  781.    UFO.Active = true;
  782.    UFO.AbdSold = new Array(0,0,0);
  783.    UFO.Ready = new Array(false,false,false);
  784.    UFO.ReadyNum = 0;
  785.    UFO.FreeSlots = 3;
  786.    UFO.snd = new Sound(this);
  787.    UFO.snd.attachSound("UFO");
  788.    RejSound = new Sound();
  789.    RejSound.attachSound("NO");
  790.    _parent.Pacified = _parent.Panel.Pacified = 0;
  791.    _parent.Dead = _parent.Panel.Dead = 0;
  792.    Box = new Object();
  793.    var DarkColor = {ra:110,rb:-50,ga:110,gb:-50,ba:110,bb:-50,aa:100,ab:0};
  794.    var NormalColor = {ra:100,rb:0,ga:100,gb:0,ba:100,bb:0,aa:100,ab:0};
  795.    this.beginFill(3711834);
  796.    this.moveTo(0,0);
  797.    this.lineTo(MapW * FW,0);
  798.    this.lineTo(MapW * FW - MapD * FA,MapD * FD);
  799.    this.lineTo(- MapD * FA,MapD * FD);
  800.    this.lineTo(0,0);
  801.    this.endFill();
  802.    Shadows._x = Shadows._y = Shadows.High._x = Shadows.High._y = 0;
  803.    zz = 0;
  804.    while(zz < MapD)
  805.    {
  806.       xx = 0;
  807.       while(xx < MapW)
  808.       {
  809.          Dpt = xx + MapW * zz * 4;
  810.          Xpos = xx * FW - zz * FA;
  811.          Zpos = zz * FD;
  812.          if(Map[zz][xx] > 0 and Map[zz][xx] < 300)
  813.          {
  814.             CreateSoldier(xx,zz,Map[zz][xx] % 100,Math.floor(Map[zz][xx] / 100));
  815.          }
  816.          if(Map[zz][xx] > 300)
  817.          {
  818.             Kind = Map[zz][xx] % 100;
  819.             if(Kind > 0)
  820.             {
  821.                TreeSample.duplicateMovieClip("Obj" + xx + "x" + zz,Dpt + MapW);
  822.                eval("Obj" + xx + "x" + zz).gotoAndStop(Kind);
  823.                eval("Obj" + xx + "x" + zz)._x = Xpos;
  824.                eval("Obj" + xx + "x" + zz)._y = Zpos;
  825.                if(Kind <= 5)
  826.                {
  827.                   Shadows.High.ShadowSample.duplicateMovieClip("Shad" + xx + "x" + zz,xx + MapW * zz);
  828.                   eval("Shadows.High.Shad" + xx + "x" + zz)._x = Xpos;
  829.                   eval("Shadows.High.Shad" + xx + "x" + zz)._y = Zpos;
  830.                   eval("Shadows.High.Shad" + xx + "x" + zz).gotoAndStop(2 + random(5));
  831.                }
  832.                else
  833.                {
  834.                   Shadows.ShadowSample.duplicateMovieClip("Shad" + xx + "x" + zz,xx + MapW * zz);
  835.                   eval("Shadows.Shad" + xx + "x" + zz)._x = Xpos;
  836.                   eval("Shadows.Shad" + xx + "x" + zz)._y = Zpos;
  837.                   eval("Shadows.Shad" + xx + "x" + zz).gotoAndStop(1 + Kind);
  838.                }
  839.             }
  840.          }
  841.          xx++;
  842.       }
  843.       zz++;
  844.    }
  845.    SoldSample._visible = false;
  846.    TreeSample._visible = false;
  847.    BulletSample._visible = false;
  848.    Shadows.ShadowSample._visible = false;
  849.    Shadows.High.ShadowSample._visible = false;
  850.    Column._visible = false;
  851.    UpdateSlots();
  852.    LX = MapW / 2;
  853.    LZ = MapD / 2;
  854.    XP = LX * FW - LZ * FA;
  855.    ZP = LZ * FD;
  856.    _X = (585 - XP) / 2;
  857.    _Y = (520 - ZP) / 2;
  858. }
  859.